package br.unicamp.ic.inf300.arena.modelo.financeiro;
/**
 * Venda de Bilhetes Eletronicos para Espetaculos (Arena Entretenimento S.A.)
 * ContaContabil.java
 */

public class ContaContabil {

	private int codConta;
	
	private int codBanco;

	private int codAgencia;

	private String numCC;
	
	private long numCartaoCredito;

	public ContaContabil() {
		super();
	}

	/**
	 * 
	 * @param codBanco
	 * @param codAgencia
	 * @param numCC
	 * @param numCartaoCredito
	 */
	public ContaContabil(int codBanco, int codAgencia, String numCC,
			long numCartaoCredito) {
		super();
		this.codBanco = codBanco;
		this.codAgencia = codAgencia;
		this.numCC = numCC;
		this.numCartaoCredito = numCartaoCredito;
	}

	public int getCodAgencia() {
		return codAgencia;
	}

	public void setCodAgencia(int codAgencia) {
		this.codAgencia = codAgencia;
	}

	public int getCodBanco() {
		return codBanco;
	}

	public void setCodBanco(int codBanco) {
		this.codBanco = codBanco;
	}

	/**
	 * Numero da conta corrente
	 * @return
	 * String
	 */
	public String getNumCC() {
		return numCC;
	}

	/**
	 * Numero da conta corrente
	 * @param numCC
	 * void
	 */
	public void setNumCC(String numCC) {
		this.numCC = numCC;
	}

	public long getNumCartaoCredito() {
		return numCartaoCredito;
	}

	public void setNumCartaoCredito(long numCartaoCredito) {
		this.numCartaoCredito = numCartaoCredito;
	}
	
	public int getCodConta() {
		return codConta;
	}

	public void setCodConta(int codConta) {
		this.codConta = codConta;
	}

	/**
	 * @return <code>String</code>
	 * JUtils plugin ;-)
	 */
	public String toString()
	{
	    final String TAB = "    ";
	    
	    StringBuffer retValue = new StringBuffer();
	    
	    retValue.append("ContaContabil ( ")
	        .append(super.toString()).append(TAB)
	        .append("codAgencia = ").append(this.codAgencia).append(TAB)
	        .append("codBanco = ").append(this.codBanco).append(TAB)
	        .append("codConta = ").append(this.codConta).append(TAB)
	        .append("numCC = ").append(this.numCC).append(TAB)
	        .append("numCartaoCredito = ").append(this.numCartaoCredito).append(TAB)
	        .append(" )");
	    
	    return retValue.toString();
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result + codAgencia;
		result = prime * result + codBanco;
		result = prime * result + codConta;
		result = prime * result + ((numCC == null) ? 0 : numCC.hashCode());
		result = prime * result
				+ (int) (numCartaoCredito ^ (numCartaoCredito >>> 32));
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		final ContaContabil other = (ContaContabil) obj;
		if (codAgencia != other.codAgencia)
			return false;
		if (codBanco != other.codBanco)
			return false;
		if (codConta != other.codConta)
			return false;
		if (numCC == null) {
			if (other.numCC != null)
				return false;
		} else if (!numCC.equals(other.numCC))
			return false;
		if (numCartaoCredito != other.numCartaoCredito)
			return false;
		return true;
	}

}